package in.model;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.util.ArrayList;
import java.util.List;
import in.lib.utils.Debug;
import in.lib.utils.SerialReaderUtil;
import in.lib.utils.SerialWriterUtil;
import lombok.Data;
@Data
public class ChannelMessage extends Message
{
protected String channelId = "-1";
@Override public ChannelMessage createFrom(JsonElement element)
{
super.createFrom(element);
try
{
JsonObject messageObject = element.getAsJsonObject();
this.channelId = messageObject.get("channel_id").getAsString();
return this;
}
catch(Exception e)
{
Debug.out(e);
}
return null;
}
@Override public List<ChannelMessage> createListFrom(JsonElement element)
{
try
{
JsonArray messageArray = element.getAsJsonArray();
ArrayList<ChannelMessage> messages = new ArrayList<ChannelMessage>(messageArray.size());
for (JsonElement messageElement : messageArray)
{
ChannelMessage message = new ChannelMessage().createFrom(messageElement);
if (message != null)
{
messages.add(message);
}
}
return messages;
}
catch (Exception e)
{
Debug.out(e);
}
return null;
}
@Override public ChannelMessage createFrom(Parcel object)
{
super.createFrom(object);
return this;
}
@Override public String getVersion()
{
return "99cd5bfc-2fcd-44e4-be69-d753f495d5e4";
}
@Override public void write(SerialWriterUtil util)
{
super.write(util);
try
{
util.writeString(getVersion());
util.writeString(channelId);
}
catch (Exception e)
{
Debug.out(e);
}
}
@Override public Message read(SerialReaderUtil util)
{
if (super.read(util) != null)
{
try
{
String version = util.readString();
if (!version.equals(getVersion())) return null;
channelId = util.readString();
return this;
}
catch (Exception e)
{
Debug.out(e);
}
}
return null;
}
public static final Parcelable.Creator<ChannelMessage> CREATOR = new Creator<ChannelMessage>()
{
@Override public ChannelMessage[] newArray(int size)
{
return new ChannelMessage[size];
}
@Override public ChannelMessage createFromParcel(Parcel source)
{
return new ChannelMessage().createFrom(source);
}
};
}